<?php
namespace Common\Service;
use Org\Word\VicWord;
use Common\Behavior\ArrayToolkitBehavior;
/**
 * 中文分词Service
 */
class VicwordService {
    protected $handle;

    function __construct()
    {
        $this->handle = new VicWord('json'); // 默认使用json 多数情况下都没有igbinary扩展
    }

    /**
     * 开始分词
     * @param $str
     * @param int $type
     * @return array 返回一维数组
     */
    function vic( $str, $type = 3 ) {
        switch ($type) {
            default:
                // 长度优先切分 。最快
                $vic = $this->handle->getWord($str);
                break;
            case 2:
                // 细粒度切分。比最快慢一点点
                $vic = $this->handle->getShortWord ($str);
                break;
            case 3:
                // 自动切分 (在相邻词做了递归) 。效果最好，速度最慢
                $vic = $this->handle->getAutoWord  ($str);
                break;
        }
        $list = ArrayToolkitBehavior::column($vic, '0');
        return $list;
    }

    /**
     * 关键词分词
     * @param $str
     * @param string $join
     * @return bool
     */
    function keywords($str, $join = ' ') {
        $list = $this->vic($str);
        $keywords = array();
        foreach ($list as $v) {
            $keywords[] = $join.$v.$join;
        }
        return $keywords;
    }
}